Hawaiʻi Coral Reef Ecosystem Monitoring

Seattle Aquarium: Conservation Programs and Partnerships

Author

Amy Olsen, Research Scientist

Published

June 22, 2024

Summary

The Seattle Aquarium has cared for and shared information about Hawaiʻi reef fishes and corals since the mid-1980s. In 2009, our conservation work expanded to include monitoring of Hawaiʻiʻs coral reef ecosystems. In collaboration with Hawaiʻi’s Division of Aquatic Resources (DAR) and Washington State University, eight reefs were selected along the west coast of Hawaiʻi Island to survey via SCUBA-based diver operated video. This research - which continues today - advances both our climate resilience and sustainable seas conservation priorities. Its aim is to provide long-term data on the health of fish populations.

Our research questions are:

  1. Did our unique underwater survey methods (developed in the Pacific Northwest) work well to capture coral reef fish and coral community diversity and abundance changes over time?

  2. How did coral reef fish communities change after climate events such as marine heatwaves observed in 2014–2015?

  3. What are the long term repercussions as marine heatwaves are expected to increase in magnitude and frequency?

Study Area

Code
#| echo: false


#set wd
setwd("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii Methods Paper")

library(tidyverse)
library(cowplot)
library(marmap)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
library(ggrepel)
library(ggspatial)
library(ggsn)

###############################
#Figure 1
#Site map
###############################

#small insert of whole state

#get world data
world <- ne_countries(scale='medium',returnclass = 'sf')
#subset US data
usa <- subset(world, admin == "United States of America")


#add a small bounding box
cust_box <- st_as_sfc(st_bbox(c(xmin = -156.343091, xmax = -154.761283,
                                ymin = 18.735745, ymax = 20.345657),
                              crs = st_crs(4326)))

#small map different colors, blue background
small.map <- ggplot(data = usa) +
  geom_sf(color = "grey50", fill = "grey50", size = 0.15) +
  geom_sf(data = cust_box, color = "red", fill = "transparent", size = 0.5) +
  coord_sf(crs = st_crs(4135), xlim = c(-161, -154), ylim = c(18,
                                                              23),
           expand = FALSE, datum = NA) +
  theme_void() +
  theme(plot.background = element_rect(color = "black", fill = "black", size = 1),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        panel.background = element_rect(fill = "white"))

#add coastline of big island
hawaii <- read_sf(dsn = "C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii Methods Paper/hawaii_coastline/Coastline.shp")

#create big map of entire island
big.map <- ggplot(data = hawaii) +
  geom_sf(color = "grey30", fill = "grey30", size = 0.15) +
  coord_sf(crs = st_crs(4135), xlim = c(-156.7, -154.55), ylim = c(18.9, 20.3)) +
  theme_bw() +
  theme(panel.background = element_rect(fill = "lightcyan2"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.title = element_blank()) +
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0)) +
  annotation_scale(location = "br")


#enter site data
site.coords <-read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii Methods Paper/Site Coordinates_all.csv")
site.coords.df <- as.data.frame(site.coords) 
colnames(site.coords.df)[1] <- "Name"
# site.coords.df$Area <- Area <- c("Puako", "Puako", "Kona", "Kona", "Mahukona", "Mahukona")

#re-order the legend
# site.coords.df$Area <- factor(site.coords.df$Area, levels = c("Mahukona", "Puako", "Kona"))


#choose a color for points
color <- "#D55E00"

# put map and points together
final.hawaii.large.map <- big.map +
  geom_point(data = site.coords.df,
             aes(x= Lon, y = Lat), 
             colour = color, 
             size = 3,
             stroke = 1.5) +
  annotation_north_arrow(location = "tl", which_north = "true",
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         height = unit(1, "cm"), width = unit(1, "cm")) +
  geom_text_repel(data = site.coords.df, aes(x = Lon, y = Lat, label = Name),
                  segment.color = "black",
                  nudge_x = -0.22,
                  nudge_y = -0.03,
                  direction = "y",
                  size = 3, 
                  color = "black") +
  theme(legend.key = element_blank())

#put the big map and small map together
final.hawaii.map <- ggdraw() + draw_plot(final.hawaii.large.map) +
  draw_plot(small.map, x = 0.11, y = 0.17, width = .2, height = .2)

print(final.hawaii.map)

Area Site names
Puakō Sites 1, 2, 5
Old Kona Airport Sites 3, 4
Māhukona Sites 6, 7
Captain Cooks Site 8

We survey eight sites in West Hawaiʻi. All are within the West Hawai‘i Regional Fishery Management Area which spans the entire western coastline of Hawai‘i island (Hawai’i Administrative Rules, HAR 13-60.4). The 2 sites in Māhukona and site 8 in Captain Cooks are subject only to the regulations specified for the West Hawai‘i Fishery Management Area, while the 3 sites in Puakō and 2 sites in Kona include additional management protections. Puakō is located within a Fish Replenishment Area (HAR 13-54). Kona is located within a Marine Life Conservation District (HAR 13-37). Prohibited activities in the Kona region are the most restrictive among the areas.

This table, from Olsen et al., 2022, does not include site 5 or 8.

Method

Surveys are conducted annually in late January or early February. Data is collected using SCUBA-based diver operated video. Transects are 100 m long and approximately 2 m wide, with the camera trained 1 m off the substrate.

Fish are counted and identified to species and functional group (Graham et al., 2015, Donovan 2017, Hobson 1974, Coral Reef Network 2005, Hoover 2008, DAR 2014).

Functional Group Description
Predators Carnivores
Secondary consumers Omnivores
Corallivores Rely on coral or coral polyps
Planktivores Rely on plankton
Browsers Reduce macroalgal cover
Grazers Feed on algal turfs
Scrapers Remove algal turfs and open space for coral recruitment

Summary Results

Data captured over the study period:

Site ’09 ’10 ’11 ’12 ’13 ’14 ’15 ’16 ’17 ’18 ’19 ’20 ’21 ’22 ’23 ’24
1 X X X X X X X X X X X X X X X
2 X X X X X X X X X X X X X X X
3 X X X X X X X X X X X X X X X
4 X X X X X X X X X X X X X X X
5 X X X X X X X X X X X X X X X
6 X X X X X X X X X X X X X
7 X X X X X X X X X X X X X
8 X X X X X X X X

Sites 6 and 7 weren’t added until 2010. In 2015, the ladder to access those sites was broken. Site 8 was added in 2014 and is boat access only. If the weather is not conducive to safe diving, we do not survey site 8. 2021 was a COVID-19 pandemic year.

The number of species we have counted to date:

Code
#| echo: false

rm(list = ls())

#set wd
setwd("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto")   

#all packages needed
library(tidyverse)
library(vegan)
library(cowplot)
library(patchwork)
library(RColorBrewer)
library(MetBrewer)

#import raw count data
dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - counts - Copy.csv", header = T, check.names = FALSE, na.strings = c("", "NA"))

names(dat) [1] <- "Location"

#wide to long format
long.dat <- dat %>%
  drop_na %>%
  pivot_longer("Abudefduf abdominalis":"Zebrasoma veliferum", names_to = "Species", values_to = "Count")

#select only forward transect counts
long.dat <- long.dat %>%
  filter(Direction == "F") %>%
  filter(Transect == "T1")

#import functional group data
func.dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - func group.csv", header = T, na.strings = c("", "NA"))

names(func.dat)[1] <- "Species"

#combine datasets and clean up
raw.data <- merge(long.dat, func.dat, by = "Species", all = T)

#reorder columns
raw.data <- raw.data[, c(2:8, 1, 9:11)]


#how many species across entire dataset
n_distinct(raw.data$Species)
[1] 119

How many fish have been counted to date:

Code
#| echo: false

rm(list = ls())

#set wd
setwd("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto")   

#all packages needed
library(tidyverse)
library(vegan)
library(cowplot)
library(patchwork)
library(RColorBrewer)
library(MetBrewer)

#import raw count data
dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - counts - Copy.csv", header = T, check.names = FALSE, na.strings = c("", "NA"))

names(dat) [1] <- "Location"

#wide to long format
long.dat <- dat %>%
  drop_na %>%
  pivot_longer("Abudefduf abdominalis":"Zebrasoma veliferum", names_to = "Species", values_to = "Count")

#select only forward transect counts
long.dat <- long.dat %>%
  filter(Direction == "F") %>%
  filter(Transect == "T1")

#import functional group data
func.dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - func group.csv", header = T, na.strings = c("", "NA"))

names(func.dat)[1] <- "Species"

#combine datasets and clean up
raw.data <- merge(long.dat, func.dat, by = "Species", all = T)

#reorder columns
raw.data <- raw.data[, c(2:8, 1, 9:11)]


#how many fish across entire dataset
sum(raw.data$Count)
[1] 37987

How many fish per functional group across the dataset?

Code
#| echo: false

rm(list = ls())

#set wd
setwd("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto")   

#all packages needed
library(tidyverse)
library(vegan)
library(cowplot)
library(patchwork)
library(RColorBrewer)
library(MetBrewer)

#import raw count data
dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - counts - Copy.csv", header = T, check.names = FALSE, na.strings = c("", "NA"))

names(dat) [1] <- "Location"

#wide to long format
long.dat <- dat %>%
  drop_na %>%
  pivot_longer("Abudefduf abdominalis":"Zebrasoma veliferum", names_to = "Species", values_to = "Count")

#select only forward transect counts
long.dat <- long.dat %>%
  filter(Direction == "F") %>%
  filter(Transect == "T1")

#import functional group data
func.dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - func group.csv", header = T, na.strings = c("", "NA"))

names(func.dat)[1] <- "Species"

#combine datasets and clean up
raw.data <- merge(long.dat, func.dat, by = "Species", all = T)

#reorder columns
raw.data <- raw.data[, c(2:8, 1, 9:11)]


#how many fish per functional group
raw.data %>%
  group_by(Functional.Group) %>%
  summarise(sum = sum(Count))
# A tibble: 7 x 2
  Functional.Group     sum
  <chr>              <int>
1 Browser              597
2 Corallivore          682
3 Grazer             15184
4 Planktivore        11239
5 Predator             188
6 Scraper             1042
7 Secondary consumer  9055

Figures

Code
#| echo: false

rm(list = ls())

#set wd
setwd("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto")   

#all packages needed
library(tidyverse)
library(vegan)
library(cowplot)
library(patchwork)
library(RColorBrewer)
library(MetBrewer)


###################################################################################
#plots of abundance and functional groups 
###################################################################################

#import raw count data
dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - counts - Copy.csv", header = T, check.names = FALSE, na.strings = c("", "NA"))

names(dat) [1] <- "Location"


#wide to long format
long.dat <- dat %>%
  drop_na %>%
  pivot_longer("Abudefduf abdominalis":"Zebrasoma veliferum", names_to = "Species", values_to = "Count")

#select only forward transect counts
long.dat <- long.dat %>%
  filter(Direction == "F") %>%
  filter(Transect == "T1")

#import functional group data
func.dat <- read.csv("C:/Users/olsena/OneDrive - Seattle Aquarium/Hawaii (General)/Hawaii Research Report - Quarto/Tidy data - func group.csv", header = T, na.strings = c("", "NA"))

names(func.dat)[1] <- "Species"

#combine datasets and clean up
raw.data <- merge(long.dat, func.dat, by = "Species", all = T)

#reorder columns
raw.data <- raw.data[, c(2:8, 1, 9:11)]

# #set color palette
# my.col.colorblind <- met.brewer("Austria")

#MAHUKONA ONLY
#only T1 forward transect
func.data.m.t1 <- raw.data %>%
  group_by(Year, Functional.Group) %>%
  filter(Site == 6 | Site == 7) %>%
  drop_na()


#set order of groups
func.data.m.t1$Functional.Group <- factor(func.data.m.t1$Functional.Group, 
                                          levels = c("Planktivore", "Grazer", 
                                                     "Secondary consumer", "Scraper", "Browser", "Corallivore", "Predator"))


#plot of abundance only t1 forward
mahu.plot <- ggplot(func.data.m.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  ylab("Total Abundance") +
  xlab("") +
  labs(title = "Māhukona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000), 
               colour = "gray50", size = 0.3, lty = 2) + 
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA), 
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(mahu.plot)

Code
#create data of just sum

sum.data.m <- func.data.m.t1 %>%
  group_by(Year) %>%
  summarise(sum = sum(Count))

#add trendline
mahu.plot2 <- ggplot(sum.data.m, aes(x = Year, y = sum)) +
  geom_col(fill = "grey60") +
  geom_smooth(se = FALSE, size = 1.5, color = "#FF7F50") +
  ylab("Total Abundance") +
  xlab("") +
  labs(title = "Māhukona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000), 
               colour = "gray50", size = 0.3, lty = 2) + 
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA), 
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) 

print(mahu.plot2)

Code
#separated by site
mahu.site.plot <- ggplot(func.data.m.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  facet_wrap(~Site) +
  ylab("Total Abundance") +
  xlab("") +
  labs(title = "Māhukona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000), 
               colour = "gray50", size = 0.3, lty = 2) + 
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_bw() +
  theme(strip.background = element_rect(fill=NA, color=NA), 
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(mahu.site.plot)

Code
#PUAKO ONLY
#only T1 forward transect
func.data.p.t1 <- raw.data %>%
  group_by(Year, Functional.Group) %>%
  filter(Site == 1 | Site == 2 | Site == 5) %>%
  drop_na


#create data of just sum

sum.data.p <- func.data.p.t1 %>%
  group_by(Year) %>%
  summarise(sum = sum(Count))


#reorder functional groups
func.data.p.t1$Functional.Group <- factor(func.data.p.t1$Functional.Group,
                                       levels = c("Planktivore", "Grazer",
                                                  "Secondary consumer", "Scraper", "Browser", "Corallivore", "Predator"))


#plot of abundance only t1 forward
puako.plot <- ggplot(func.data.p.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  ylab("") +
  xlab("Year") +
  labs(title = "Puakō") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) + #bleaching line
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(puako.plot)

Code
#plot with trendline
puako.plot2 <- ggplot(sum.data.p, aes(x = Year, y = sum)) +
  geom_col(fill = "grey60") +
  geom_smooth(se = FALSE, size = 1.5, color = "#FF7F50") +
  ylab("Total Abundance") +
  xlab("") +
  labs(title = "Puakō") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000), 
               colour = "gray50", size = 0.3, lty = 2) + 
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA), 
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) 

print(puako.plot2)

Code
#plot with sites separated out
puako.site.plot <- ggplot(func.data.p.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  facet_wrap(~Site) +
  ylab("") +
  xlab("Year") +
  labs(title = "Puakō") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) + #bleaching line
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 1000)) +
  theme_bw() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(puako.site.plot)

Code
#predators only for puako4reefs
pred.data <- func.data.p.t1 %>%
  filter(Functional.Group == "Predator")

pred.plot <- ggplot(pred.data, aes(x = Year, y = Count, fill = Common.name)) +
  geom_col() +
  facet_wrap(~Site) +
  ylab("") +
  xlab("Year") +
  labs(title = "Puakō") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) + #bleaching line
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 35)) +
  theme_bw() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points"))

print(pred.plot)

Code
#KONA ONLY
#only T1 forward transect
func.data.k.t1 <- raw.data %>%
  group_by(Year, Functional.Group) %>%
  filter(Site == 3 | Site == 4) %>%
  drop_na

#count sum by year
sum.data.k <- func.data.k.t1 %>%
  group_by(Year) %>%
  summarise(sum = sum(Count))


func.data.k.t1$Functional.Group <- factor(func.data.k.t1$Functional.Group,
                                       levels = c("Planktivore", "Grazer",
                                                  "Secondary consumer", "Scraper", "Browser", "Corallivore", "Predator"))



#plot of abundance only t1 forward
kona.plot <- ggplot(func.data.k.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  ylab("") +
  xlab("") +
  labs(title = "Kona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) +
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        legend.key.height = unit(0.35, "cm"),
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(kona.plot)

Code
#plot with trendline
kona.plot2 <- ggplot(sum.data.k, aes(x = Year, y = sum)) +
  geom_col(fill = "grey60") +
  geom_smooth(se = FALSE, size = 1.5, color = "#FF7F50") +
  ylab("Total Abundance") +
  xlab("") +
  labs(title = "Kona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000), 
               colour = "gray50", size = 0.3, lty = 2) + 
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA), 
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) 

print(kona.plot2)

Code
kona.site.plot <- ggplot(func.data.k.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  facet_wrap(~Site) +
  ylab("") +
  xlab("") +
  labs(title = "Kona") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) +
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_bw() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        legend.key.height = unit(0.35, "cm"),
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(kona.site.plot)

Code
#cAPTAIN COOKS ONLY
#only T1 forward transect
func.data.c.t1 <- raw.data %>%
  group_by(Year, Functional.Group) %>%
  filter(Site == 8) %>%
  drop_na

# #count sum by year
# func.data.c.t1 %>%
#   group_by(Year) %>%
#   summarise(sum = sum(Count))


func.data.c.t1$Functional.Group <- factor(func.data.c.t1$Functional.Group,
                                       levels = c("Planktivore", "Grazer",
                                                  "Secondary consumer", "Scraper", "Browser", "Corallivore", "Predator"))



#plot of abundance only t1 forward
cook.plot <- ggplot(func.data.c.t1, aes(x = Year, y = Count, fill = Functional.Group)) +
  geom_col() +
  ylab("") +
  xlab("") +
  labs(title = "Captain Cooks") +
  geom_segment(aes(x = 2014.5, y = 0, xend = 2014.5, yend = 2000),
               colour = "gray50", size = 0.3, lty = 2) +
  scale_x_continuous(expand = c(0,0)) +
  scale_y_continuous(expand = c(0,0), limits = c(0, 2200)) +
  theme_minimal() +
  theme(strip.background = element_rect(fill=NA, color=NA),
        axis.line = element_line(size = 0.5, color = "gray50"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = "right",
        legend.key.height = unit(0.35, "cm"),
        plot.margin = margin(4.8, 5.0, 5.5, 5.0, "points")) +
  scale_fill_brewer(palette = "Set2")

print(cook.plot)

Code
# #ALL SITES ABUNDANCE PLOT
# abun.multiplot.t1 <- p1.m.t1 + p1.p.t1 + p1.k.t1 + plot_annotation(title = "Abundance by Area",
#                                                                    theme = theme(plot.title = element_text(size = 14, face = "bold")))
# 
# 
# abun.multiplot.t1 <- p1.m.t1.avg + p1.p.t1.avg + p1.k.t1.avg + plot_annotation(title = "Abundance by Area",
#                                                                    theme = theme(plot.title = element_text(size = 14, face = "bold")))
# 
# print(abun.multiplot.t1)

GitHub Repositories:

Publications

  • Larson, S., Christiansen, J., Olsen, A. Y., Walsh, W. J., Teague, C. H., Tissot, B., & Randell, Z. (2022) A unique 100 meter underwater survey method documents changes in abundance, richness, and community structure of Hawaiʹi reef fishes. Frontiers in Marine Science, 1213. https://doi.org/10.3389/fmars.2022.892261

  • Olsen, A. Y., Larson, S., Padilla-Gamiño, J. L., & Klinger, T. (2022). Changes in fish assemblages after marine heatwave events in West Hawai ’i Island. Marine Ecology Progress Series, 698, 95-109. https://doi.org/10.3354/meps14156